#include "LinkTree.h"
#include "MyFileSystem.h"
#include <iostream>

int main(int argc, char *argv[])
{
    // LinkTree tree;

    // TreeNode *one = new TreeNode(1);
    // one->Connect(tree.GetRoot());   //根节点

    // TreeNode *two = new TreeNode(2);
    // two->Connect(one);  //one的子节点

    // TreeNode *three = new TreeNode(3);
    // three->Connect(one);  //one的子节点

    // TreeNode *four = new TreeNode(4);
    // TreeNode *five = new TreeNode(5);
    // TreeNode *six = new TreeNode(6);
    // TreeNode *seven = new TreeNode(7);
    // TreeNode *eight = new TreeNode(8);
    // TreeNode *nine = new TreeNode(9);

    // four->Connect(two);
    // five->Connect(two);
    // six->Connect(two);

    // seven->Connect(three);
    // eight->Connect(three);
    // nine->Connect(three);

    // // nine->Disconnect(three);
    // // nine->Connect(two);
    // // tree.show();
    // DoubleLinkList list = tree.FindByElemenet(6);
    // TreeNode *n = (TreeNode*) *list.FindByIndex(0);
    // n->Disconnect(n->GetParent());
    
    // list = tree.FindByElemenet(5);
    // TreeNode *p = (TreeNode*) *list.FindByIndex(0);
    // n->Connect(p);

    // tree.show();
    // std::cout<<tree.GetTreeHeight()<<std::endl;
    // std::cout<<tree.Size()<<std::endl;
    // std::cout<<tree.Count()<<std::endl;
    // return 0;



    // LinkTree tree;

    // TreeNode *suqian = new TreeNode("苏嵌");
    // suqian->Connect(tree.GetRoot());

    // TreeNode *class1 = new TreeNode("267班");
    // TreeNode *class2 = new TreeNode("268班");
    // class1->Connect(suqian);
    // class2->Connect(suqian);

    // TreeNode *c1 = new TreeNode("张三");
    // TreeNode *c2 = new TreeNode("李四");
    // TreeNode *c3 = new TreeNode("王五");
    // TreeNode *c4 = new TreeNode("赵六");

    // c1->Connect(class1);
    // c2->Connect(class1);

    // c3->Connect(class2);
    // c4->Connect(class2);

    
    // tree.show();

    // DoubleLinkList list = tree.FindByElemenet("李四");
    // TreeNode *stu = (TreeNode*) *list.FindByIndex(0);
    // stu->Disconnect(stu->GetParent());

    // list = tree.FindByElemenet("268班");
    // TreeNode *c = (TreeNode*) *list.FindByIndex(0);
    // stu->Connect(c);

    // tree.show();
    // return 0;




    // std::string path("./");
    // if(argc >= 2)
    // {
    //     path = argv[1];
    // }
    // MyFileSystem s("./");
    // s.show();
    // //MyFileSystem s(path);
    // //s.FindByFileName("1");
    // return 0;



    std::string path = "/home/lvguanzhong/Sq268/设计模式";
    MyFileSystem fileSystem(path);

    fileSystem.show();

    std::string fileNameToFind = "1";
    fileSystem.FindByFileName(fileNameToFind);
    return 0;
}